package thinkingJava.chapter12;

import java.io.FileNotFoundException;
import java.io.IOException;

class WrapCheckedException {
	void throwRuntimeException(int type) {
		try {
			switch(type) {
				case 0: throw new FileNotFoundException();
				case 1: throw new IOException();
				case 2: throw new RuntimeException("What am i");
				default : return;
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
}
class SomeOtherException extends Exception {}
public class TurnOffChecking {
	public static void main(String[] args) {
		WrapCheckedException wce = new WrapCheckedException();
		wce.throwRuntimeException(3);
		for (int i = 0; i < 4; i ++) {
			try {
				if (i < 3) {
					wce.throwRuntimeException(i);
				} else {
					throw new SomeOtherException();
				}
			} catch (SomeOtherException e) {
				print("some other exception : " + e);
			} catch (RuntimeException re) {
				try {
					throw re.getCause();
				} catch(FileNotFoundException e) {
					print("file not found : " + e);
				} catch (IOException e) {
					print("I/O exception : " + e);
				} catch (Throwable e) {
					print("Throwable : " + e);
				}
			}
		}
	}
	public static void print(Object o) {
		System.out.println(o);
	}
}
